package cn.tannn.tcache.util;

/**
 * @author <a href="https://t.tannn.cn/">tan</a>
 * @date 2024/6/21 上午11:00
 */
public class RegexUtil {

    /**
     * redis正则处理 -  将 glob 模式转换为正则表达式
     * @param glob glob
     * @return regex
     */
    public static String globToRegex(String glob) {
        StringBuilder regex = new StringBuilder(glob.length());
        regex.append('^');
        for (int i = 0; i < glob.length(); i++) {
            char c = glob.charAt(i);
            switch (c) {
                case '*':
                    regex.append(".*");
                    break;
                case '?':
                    regex.append('.');
                    break;
                case '.':
                    regex.append("\\.");
                    break;
                case '\\':
                    regex.append("\\\\");
                    break;
                default:
                    if ("+()^$|{}[]".indexOf(c) != -1) {
                        regex.append('\\');
                    }
                    regex.append(c);
                    break;
            }
        }
        regex.append('$');
        return regex.toString();
    }
}
